package com.eshore.ezone.activities;

import com.eshore.ezone.utils.LogUtils;
import com.eshore.ezone.utils.NotificationsUtil;
import com.eshore.ezone.utils.Preferences;
import com.eshore.ezone.webservice.ServiceConfigs;
import com.eshore.ezone.webservice.ServiceParser;

import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.widget.Toast;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

public class TestAPIActivity extends Activity {
    private final LogUtils mLog = LogUtils.getLog(LoginActivity.class);
    private Context mContext;
    private boolean DEBUG = false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this; 
        if(DEBUG) {
            //new APITestTask().execute();
        }
        //new TestGetUserInfoTask().execute();
    }
    
//    private class APITestTask extends AsyncTask<Void, Void, HashMap<String, String>> {
//        private Exception mReason;
//        @Override
//        protected HashMap<String, String> doInBackground(Void... params) {
//            try {
//                final String jsonString = ServiceParser.getResponse(TestAPIActivity.this, 
//                        "getLoginUrl", "/phoneNumServlet.htm");
//                if(!TextUtils.isEmpty(jsonString)) {
//                    mLog.info(jsonString);
//                    return ServiceParser.parse2Map(jsonString);
//                }
//            } catch (IOException e1) {
//                e1.printStackTrace();
//                mReason = e1;
//                mLog.error(e1.getMessage());
//                return null;
//            } 
//            return null;
//        }
//
//        @Override
//        protected void onPostExecute(HashMap<String, String> result) {
//            if(result != null) {
//                mLog.verbose((String)result.get("url"));
//                final Editor editor= PreferenceManager.getDefaultSharedPreferences(mContext).edit();
//                Preferences.storeLoginURL(editor, (String)result.get("url"));
//            } else {
//                Toast.makeText(TestAPIActivity.this, "", Toast.LENGTH_SHORT).show();
//                NotificationsUtil.ToastReasonForFailure(TestAPIActivity.this, mReason);
//            }
//        }
//    }
//    
//    /////////////////////////////////////////////////////////////////////////////////////////////////////
//    private class TestGetUserInfoTask extends AsyncTask<Void, Void, HashMap<String, String>> {
//        private Exception mReason;
//        @Override
//        protected HashMap<String, String> doInBackground(Void... params) {
//            try {
//                final SharedPreferences prfs = PreferenceManager.getDefaultSharedPreferences(mContext);
//                String loginURL = prfs.getString(Preferences.PREFERENCE_LOGIN_URL, "");
//                if(TextUtils.isEmpty(loginURL)) {
//                    final String jsonString = ServiceParser.getResponse(TestAPIActivity.this, 
//                            "getLoginUrl", "/phoneNumServlet.htm");
//                    if(!TextUtils.isEmpty(jsonString)) {
//                        mLog.info(jsonString);
//                        loginURL =  (String)ServiceParser.parse2Map(jsonString).get("url");
//                        if(!TextUtils.isEmpty(loginURL)) {
//                            Preferences.storeLoginURL(prfs.edit(), loginURL);
//                        } else {
//                            return null;
//                        }
//                    }
//                }
//                
//                mLog.info(loginURL);
//                final String jsonString = ServiceParser.getResponse(mContext, 
//                        "user.login", handleLoginURL(loginURL), "");
//                if(!TextUtils.isEmpty(jsonString)) {
//                    mLog.info(jsonString);
//                    return ServiceParser.parse2Map(jsonString);
//                }
//            } catch (IOException e1) {
//                e1.printStackTrace();
//                mReason = e1;
//                mLog.error(e1.getMessage());
//                return null;
//            } 
//            return null;
//        }
//
//        @Override
//        protected void onPostExecute(HashMap<String, String> result) {
//            if(result != null) {
//                mLog.info(result.toString());
//                mLog.info((String)result.get("userId"));
//                mLog.info((String)result.get("userMobile"));
//                mLog.info((String)result.get("sessionKey"));
//                mLog.info((String)result.get("userNickName"));
//            } else {
//                Toast.makeText(TestAPIActivity.this, "", Toast.LENGTH_SHORT).show();
//                NotificationsUtil.ToastReasonForFailure(TestAPIActivity.this, mReason);
//            }
//        }
//    }
//    
//    private String handleLoginURL(String url) {
//        String[] arr = url.split("\\?");
//        String host = arr[0];
//        ArrayList<BasicNameValuePair> plist= ServiceConfigs.sValuePairMap.get("user.login");
//        arr = arr[1].split("&");
//        for (int i = 0; i < arr.length; i++) {
//            String[] params = arr[i].split("=");
//            if (params.length == 2) {
//                plist.add(new BasicNameValuePair(params[0], params[1]));
//            } else {
//                plist.add(new BasicNameValuePair(params[0], ""));
//            }
//        }
//        return host;
//    }
}
